package cn.shenlong.mybatis;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.RowBounds;

/**
 * 基本Mapper接口
 * 
 * @author chenl 2012-8-13
 * @param <T>
 */
public interface BaseMapper<T> {

	/**
	 * 保存实体
	 * 
	 * @param entity
	 * @return
	 */
	public Integer saveEntity(T entity);

	/**
	 * 更新实体
	 * 
	 * @param entity
	 * @return
	 */
	public int updateEntity(T entity);

	/**
	 * 根据主键查找实体类容
	 * 
	 * @param entity
	 * @return
	 */
	public T findByPK(Serializable entityId);

	/**
	 * 根据条件统计记录数
	 * 
	 * @param para
	 * @return
	 */
	public Long findCountByCriteria(Map<String, Object> param);

	/**
	 * 批量删除
	 * 
	 * @param ids
	 * @return
	 */
	public int deleteByPKArray(Serializable[] ids);

	/**
	 * 根据条件搜索实现分页
	 * 
	 * @param para
	 * @param bounds
	 * @return
	 */
	public List<T> findPageListByCriteria(Map<String, Object> para,
			RowBounds bounds);
}
